草庐IT

windbg 常用命令

全部标签

windows - WinDbg:尝试附加到进程时 dbghelp.dll 的版本不匹配

一年多以前,我已经使用WinDbg和DebugDiag来查找我们在Java中使用的JNInativeDLL中的内存泄漏。现在我正在寻找线程句柄泄漏。我使用ProcessExplorer创建了一个内存转储,并尝试在DebugDiag中对其进行分析,但我得到的只是脚本错误:我也尝试过WinDbg,但它无法再附加到进程。我总是收到错误消息“dbghelp.dll的版本与调试器不匹配”:(“UnbekannterFehler”的意思是“未知错误”)我卸载了DebugDiag和WindowsSDK,然后下载了最新版本并安装了WindowsSDK8和DebugDiag1.2(x86)。问题保持不变

windows - Windbg <未分类> 内存区域

我想确定eax寄存器实际指向[Stack或Heap]的位置。在下面的windbgoutput!addressoutput中显示它未分类。0:014>reax=01198ce8ebx=00000000ecx=01198bf8edx=00000000esi=01196ed8edi=01198160eip=0710a501esp=01e8fdc8ebp=01e8fe28iopl=0nvupeiplnznaponccs=001bss=0023ds=0023es=0023fs=0038gs=0000efl=00000202libmp4v2!MP4GetVideoProfileLevel+0x3b

windows - 内存范围内的 Windbg 中断

如何为特定内存范围设置访问中断?ba只接受一个地址。除非没有其他办法,否则我宁愿不写脚本。 最佳答案 您必须开发一个插件才能在Windbg中执行此操作。Thispage描述了开发此类插件的逻辑。或者您可以尝试Ollydbg,因为最新版本能够为内存范围设置断点。 关于windows-内存范围内的Windbg中断,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/20168228/

windows - 测试 MS-CAPI CSP,即使使用 WinDbg 内核调试,签名也会失败

尝试在Win7下测试一个新的CSP。将启动配置设置为允许内核调试,运行WndDbg并选择file:kerneldebug并设置为本地。尝试将signtool与我的新CSP一起使用仍然会导致签名失败检查。环境是:OSName:MicrosoftWindows7HomePremiumOSVersion:6.1.7601ServicePack1Build7601OSManufacturer:MicrosoftCorporationOSConfiguration:StandaloneWorkstationOSBuildType:MultiprocessorFreeSystemModel:Del

windows - 如何阻止 WinDbg 缩小窗口?

这是一个奇怪的错误。比如说,如果我打开WinDbg并按照我喜欢的方式放置所有窗口:然后,出于某种原因,我打开WinDbg的次数越多,它就越会缩小所有这些窗口。所以随着时间的推移,它最终看起来像这样:有没有办法阻止它这样做? 最佳答案 这不是对旧版本WinDbg的修复。这就是如何在10以外的Windows系统上安装WinDbgPreviewv.10。(@magicandre1981在对我的原始问题的评论中建议。)安装WinDbgPreview从Windows10计算机上的Windows应用商店。然后运行它。打开任务管理器并切换到进程选

c++ - Windbg:ChildEBP和RetAddr的含义

在WinDbg中,k或kb命令展开堆栈并生成堆栈跟踪。输出看起来像这样-ChildEBPRetAddrArgstoChild0021b2f0559fdbf204b885a002a300005a675a790021b3dc559fc3b802a3d0b80021b4c000000000据我所知,EBP是指向当前栈帧起始地址的基指针。RetAddr是“返回地址”,一旦当前函数返回,处理将在此处继续。但是,据我所知,函数框架被压入堆栈。那么,为什么RetAddr的值与ChildEBP的值明显不同?它们应该是相似的,因为我们在同一个堆栈上工作。我错过了什么吗? 最佳

c++ - 使用 symstore.exe 无法在 Windbg 或 Visual Studio 中为小型转储加载符号

为了跟踪仅在Windows8用户计算机上发生的Qt崩溃,我设置了一个本地符号服务器以用于调试故障转储。首先,我使用以下标志集进行了完整构建:QMAKE_CFLAGS_RELEASE+=-ZiQMAKE_CXXFLAGS_RELEASE+=-ZiQMAKE_LFLAGS_RELEASE+=/DEBUG/OPT:REF并使用WindowsInstaller和VS部署项目构建了一个安装程序。然后我运行了以下symstore.exe命令:C:\ProgramFiles(x86)\WindowsKits\8.1\Debuggers\x64>symstore.exeadd/r/fC:\buildd

windows - windbg 内存泄漏调查 - 缺少堆内存

我正在使用windbg调查Windows应用程序中的缓慢内存泄漏!heap-s给出以下输出HeapFlagsReservCommitVirtFreeListUCRVirtLockFast(k)(k)(k)(k)lengthblockscont.heap-------------------------------------------------------------------------------------00000023d62c0000080000021182680116999611819001575927697832b63LFH00000023d483000008008

windows - 创建 QEmu guest 操作系统的 WinDbg 可读转储

我在Linux上运行QEmu,虚拟化操作系统是WindowsXP。我想要第一种或第二种可能性:在QEmu中应用一个命令,创建一个可以用WinDbg打开的转储在QEmu中应用一个创建特定类型转储的命令,然后使用另一个实用程序使其可被WinDbg读取我知道QEmu的“dump-guest-memory”(创建ELF转储)、rekall的raw2dmp插件和Volatility的raw2dmp插件。WinDbg可以扫描输出,但实际上您会遇到header错误的问题-可能是转储中最重要的部分,当使用上述工具/插件创建转储时,这毫无用处。许多字段缺少正确的详细信息。与Windows操作系统本身创建

windows - 在 windbg 中的 COM 类方法上设置断点

是否有某种方法,类似于“bmModule!Symbol”,可以在windbg中的COM类的特定方法上设置断点?看起来COMDLL只导出四个符号(DllCanUnloadNow、DllGetClassObject、DllRegisterServer和DllUnregisterServer),因此通常的“bm”方法不起作用。我假设还有其他方法可以做到这一点,但在过去一个小时左右我一直没能找到它。 最佳答案 您应该可以使用bu(Unresolved断点)。我相信语法如下,但我的内存可能生锈了:buMyDll!MyClass::MyMeth